package main

import "fmt"

// 寻找数组中买卖股票的最佳时机，即两个数字的最大差值
// 每次都假设是今天卖出，然后求今天之前的历史最低点
// 股票买卖 I：只能买卖一次，求最大利润
func maxProfitI(prices []int) int {
	if len(prices) <= 1 {
		return 0
	}

	minPrice := prices[0]
	maxProfit := 0

	for i := 1; i < len(prices); i++ {
		// 更新最低价格
		if prices[i] < minPrice {
			minPrice = prices[i]
		}
		// 计算当前价格卖出的利润
		profit := prices[i] - minPrice
		if profit > maxProfit {
			maxProfit = profit
		}
	}

	return maxProfit
}

// 股票买卖 II：可以多次买卖，求最大利润
func maxProfitII(prices []int) int {
	maxProfit := 0
	minprice := 99999
	for _, v := range prices {
		if v <= minprice {
			minprice = v
		}
		if v > minprice {
			maxProfit = maxProfit + (v - minprice)
			minprice = v
		}
	}
	return maxProfit
}

func main() {

	prices1 := []int{7, 1, 5, 3, 6, 4}
	result1 := maxProfitI(prices1)
	fmt.Printf("max profit = %d\n", result1)
}
